今天我們暫時逃離一下程式,來建立一點GIS知識吧~
今天不寫程式改來學知識 系列正式開張!此系列會穿插在功能開發系列中、分散在不同天發文,讓頭腦休息放空一下,搞不好就會想到BUG的解法了!
此系列第一篇我們來介紹「GIS常用服務與資料交換格式」,算是個初級班、給完全沒有概念的人看的。
本篇是統整網路上各文章而寫出來的,因此會有許多參考資料,會在最後統一列出
資料交換需求無非就是想要在不同電腦、甚至不同系統上可以利用共通的格式進行轉換,達到資料交換的目的。
而有些時候我們不需要直接拿到資料、儲存在我們自己的本機上,而是只是想要展示而已,也免去了更新資料後還要再拿一次最新版的檔案,因此這時候就可以透過服務的方式發佈給使用者使用,集中式的資料管理。
WMS (Web Map Service, 網路地圖服務)
可以依據 選擇的範圍 快速的根據資料(無論是向量資料還是網格資料)進行照相,影像再回傳給前端,前端的使用者可以調整透明度進行資料的套疊,藉由此方式達到快速傳遞資訊的目的。
伺服端是透過HTTP通訊協定與Client端互動,並透過URL方式傳送參數
WMS提供的功能有:
GetCapabilities(必須):獲得 WMS 服務的内容和接受的請求。GetMap(必須):獲得指定的地圖數據GetFeatureInfo(可選):可以查詢特定參數WFS(Web Feature Service, 網路圖徵服務)
其原理與WMS相似,主要差別是它不是回傳影像資料,而是將原始資料轉譯成 GML來提供前端做使用,利用WFS可以直接得到圖徵的 向量檔案。
所有WFS都支援GML格式的輸出
WFS提供的功能有:
GetCapabilities:獲得 WFS 服務的内容和接受的請求。DescribeFeatureType:獲得屬性的描述GetFeature:以一定的filter獲得一部分的圖徵介接範例:
https://api.land.moi.gov.tw/cp/gis/landWFS?version=1.1.1&Service=WFS&request=GetFeature&LD=AA&SCNO=0001&PO=00010000&srs=epsg:4326
上述服務因為需要金鑰,若大家想要看成果可以利用地政整合資訊服務共享協作平台點選介面測試進行測試
WMTS(Web Map Tile Service,網路圖磚服務)
見下圖,取自QGIS技術文件 ,預先依據比例尺自動切出不同大小的圖磚,概念有點像影像金字塔,可透過WMTS服務去撈所需區塊的圖塊出來,而不用整個影像去搜尋再切,類似給每個小圖磚一個Index索引,快速找到資料回傳。
優點為增加效率,但缺點就是需要預處理,要花一點時間讓它切完才能讓使用者介接;底圖的圖資大多都採用WMTS方式進行回傳。
WMS提供的功能有:
GetCapabilities:獲得 WMTS 服務的内容和接受的請求。GetTile:獲得指定的圖磚GetFeatureInfo:可以查詢特定資料介接範例:
https://wmts.nlsc.gov.tw/wmts/EMAP/default/EPSG:3857/6/27/53https://wmts.nlsc.gov.tw/wmts/EMAP/default/EPSG:3857/{TileLevel}/{TileRow}/{TileCol}https://wmts.nlsc.gov.tw/wmts/EMAP/default/EPSG:3857/[z]/[y]/
向量圖磚(vector tiles)
聽完上述幾個服務的格式敘述,相信大家可以想像得到,向量圖磚就是向量資料像圖磚一樣產製,使用者可以快速查詢並獲得向量的資料。
如下圖,來源出自 BHSoft
介接範例:
https://basemaps.arcgis.com/arcgis/rest/services/World_Basemap_v2/VectorTileServer
KML(Keyhole Markup Language)為一種以XML格式為主的語法,主要用在Google Earth、Google底圖等相關的軟體當中。
格式範例:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Placemark>
    <name>Simple placemark</name>
    <description>Attached to the ground. Intelligently places itself at the height of the underlying terrain.</description>
    <Point>
      <coordinates>-122.0822035425683,37.42228990140251,0</coordinates>
    </Point>
  </Placemark>
</kml>
GML(Geography Markup Language, 地理標記語言)
以XML格式進行編碼,可以描述具有時間、空間及主題屬性之各類地理現象,內容包含坐標系統、坐標、時間、ISO各種資料型別的標準記錄方式。
格式範例:
<gml:featureMember>
  <riv:RIV_河川>
    <riv:geometry>
      <gml:MultiSurface srsName="EPSG:3828">
        <gml:surfaceMember>
          <gml:Polygon>
            <gml:exterior>
              <gml:LinearRing>
                <gml:posList srsDimension="2" count="8">…</gml:posList>
              </gml:LinearRing>
            </gml:exterior>
          </gml:Polygon>
        </gml:surfaceMember>
        <gml:surfaceMember>…</gml:surfaceMember>
        <gml:surfaceMember>…</gml:surfaceMember>
      </gml:MultiSurface>
    </riv:geometry>
    <riv:河川代碼>114000110</riv:河川代碼>
    <riv:河川中文名稱>淡水河</riv:河川中文名稱>
    <riv:河川類別>1</riv:河川類別>
  </riv:RIV_河川>
</gml:featureMember>
帶有空間資訊的Json格式
是一種基於JSON的地理空間數據交換格式,它定義了幾種類型JSON對象以及它們組合在一起的方法,以表示有關地理要素、屬性和它們的空間範圍的數據。
FROM 維基百科
使用唯一地理坐標參考系統 WGS84 和 十進位 度單位,一個GeoJSON對象可以是 Geometry, Feature或者 FeatureCollection.
可以用geojson.io這個網站去即時呈現圖面資訊
格式範例:
{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [125.6, 10.1]
  },
  "properties": {
    "name": "Dinagat Islands"
  }
}
GPX(GPS eXchange Format)為GPS的交換格式檔,架構為以XML架構為主,以下針對標籤進行說明。
<gpx>:為GPX最上層的標籤,包含了所有路徑資料。<trk>:為路徑資料,裡面有名稱<name>標籤與路徑分段資料<trkseq>。<trkseq>:內儲存了路徑點<trkpt>。<trkpt>:路徑點標籤中有 lon 與 lat 兩不同的屬性,下層包含高程<ele>與時間<time>資料。<ele>:高程標籤。<time>:時間標籤。
格式範例:
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<gpx>
	<metadata>
		<name>GPX測試資料</name>
		<link href="https://">
			<text>GPX測試資料</text>
		</link>
		<time>2020-09-18T00:02:44Z</time>
	</metadata>
	<trk>
		<trkseg>
			<trkpt lat="25.0657096" lon="121.2938227">
				<ele>117.97552490234375</ele>
				<time>2020-09-17T22:01:03Z</time>
			</trkpt>
			<trkpt lat="25.06572007914513" lon="121.29384438349062">
				<ele>102.16314724193944</ele>
				<time>2020-09-17T22:01:45Z</time>
			</trkpt>
			<trkpt lat="25.06574884546613" lon="121.29383588144873">
				<ele>99.64136975263682</ele>
				<time>2020-09-17T22:02:02Z</time>
			</trkpt>
			<trkpt lat="25.065806317628397" lon="121.29384460884322">
				<ele>99.12241200274408</ele>
				<time>2020-09-17T22:02:11Z</time>
			</trkpt>
			<trkpt lat="25.065868443075406" lon="121.29386294152904">
				<ele>98.9667246715898</ele>
				<time>2020-09-17T22:02:17Z</time>
			</trkpt>
		</trkseg>
	</trk>
</gpx>
WKT(Well-Known Text)
是一種純文本標記格式,用於表示GIS向量資料、地理坐標系統。WKT可以表示的幾何圖形包括:點、線、面、不規則三角網(TIN)及多面體等。
格式範例:
POINT(121 25)
LINESTRING(121 25,121.5 25,121.5 25.5,121 25.5)
POLYGON((121 25,121.5 25,121.5 25.5,121 25.5,121 25))
今天簡單的了解了應用於GIS領域上有許多不同的資料服務與格式,每個格式都有一些差異,有使用上的缺點與優點,單就需求去局決定要使用哪種格式進行資料交換。
在這邊主要是介紹開放地理空間協會OGC所列出來的格式,因此服務如ArcGIS的Dynamic服務、或是資料如Shapefile格式的資料,都不在此次的討論範圍內。
明天我們又要回到寫程式議題囉~ 明天我們來建立圖層清單,可以讓使用者自由套疊!